1. Field of the Invention
The present invention generally relates to computer systems including host computers and peripheral devices. More particularly, the present invention is for controlling print jobs in a printer being hosted by one or more computers.
2. Description of the Related Art
Host-based printers are printers in communication with one or more host computers that send print jobs to the printer containing print data to be printed upon a media. The host computers also typically send commands to the printer either with the print jobs or separately therefrom. The print and command data is received from the host typically via the parallel or USB port of the printer. In most printers, there are two different states in which the printer receives data from the host: Command Mode and Print Data Mode.
In Print Data Mode, the printer receives printer swath data (xe2x80x9cprint dataxe2x80x9d) at high speed using a DMA (direct memory access) channel to the processor of the printer. In Command Mode, the printer receives data one byte at a time at the processor and interprets that byte of data before receiving the next byte. Thus, the rate at which data is processed in Command Mode is very slow when compared to Print Data Mode since the printer does not interpret or parse the print data.
Further, in existing host based printers, altering a function of the printer, such as purging a print job, can be accomplished with an INIT line under two conditions: host to printer connection is via parallel port and the host operating system allows the host software to directly manipulate the INIT line. This technique allows a print job to be purged quickly, however, such technique is limited in that it only applies to parallel ports in some operating systems.
An alternative technique that is applicable to any operating system and type of communication port involves sending a fixed length of NULL or other characters to guarantee the transition from print data mode to command mode so that the host can send additional commands to purge the print job. The disadvantage of this technique is that a long delay can occur as a fixed length of NULL or other characters that comprise a command is typically set by the maximum print swath buffer size, which can be very large.
An example of the time required to purge a print job in a typical printer is as follows:
Print Data Mode (Swath) data rate=the rate at which the printer can accept.
Print data Command Mode data rate=the rate at which the printer can accept Command Mode data.
Swath Buffer Size=the total size of a Swath of print data.
Swath Bytes Transferred=the amount of data that has been transferred for a given Swath.
Swath Bytes Remaining=the amount of data that remains to be transferred for a given
Swath, noting that Swath Buffer Size=Swath Bytes Transferred+Swath Bytes Remaining.
Time To Purge Print Job=Swath Bytes Remaining x Print Data Mode data rate+
Swath Bytes transferredxc3x97Command Mode data rate.
So, an example of the time required to cancel printing in a typical case is:
Print Data Mode data rate=5 microseconds/byte
Command Mode data rate=100 microseconds/byte
Swath Buffer Size=128,000 bytes
Swath Bytes Transferred=100,000 bytes
Swath Bytes Remaining=28,000 bytes
Time To Purge Print Job=28,000xc3x975 microseconds+100,000xc3x97100 microseconds=10.14 seconds.
Accordingly, it would be advantageous to provide a manner to expeditiously send a command to a printer, such as effectuating a print job cancellation and purging the print job in the printer, with the least possible time delay. It is to the provision of such a system and method that the present invention is primarily directed.
The present invention is a system and method for controlling a print job in a printer that is in communication with one or more host computers. The system includes a printer that receives print jobs from one or more host computers that are in communication therewith. The printer includes a processor that receives one or more print data swaths from the one or more host computers, and at least one of the print data swaths including at least a predefined group of characters. There is at least one host computer in communication with the printer and the host computer selectively sends print jobs including one or more print data swaths and command data to the printer. The host computer further selectively sends a command comprised of a stream of predetermined characters within the print data swath, and the command alters function in the printer when received by the printer. More preferably, the host computer further selectively sends a command comprised of a stream of characters within the print data swath to get the printer into command mode, and the host computer continues to send characters in command mode until a predetermined number of characters alters the function in the printer. And once in the command mode, the printer preferably sends a message back to the host computer indicating that a function has been changed and/or telling the host computer to cease sending the command to the printer, i.e. cease transmitting a stream of identical characters.
The command sent from the host computer preferably purges a print job in the printer. Further, the command is preferably comprised of a series of identical characters that are sent in the print data swath and are interpreted after the print data swath is received. In the preferred embodiment, the command is comprised of a series of null characters either sent in a predetermined group or in a continuous stream.
The invention includes a method of controlling print jobs in a printer receiving print jobs from one or more host computers which includes the steps of sending a print job including one or more print data swaths from the host computer to the printer, sending a command embedded in the print data swath from the host computer to the printer, and altering a function of the printer with respect to the print job based upon the command received. The step of altering a function of the printer is preferably purging a print job in the queue. And the step of sending a command in the print data swath is preferably sending a series of identical characters in the print data, such as sending a series of null characters from the host to the printer in the print data.
This invention particularly discloses a technique whereby a print job can be easily cancelled by the host computer without the use of a hardware signal line. In sending a cancel print or other command in the print data swath, a significant amount of processing time is saved at the printer and the desired function, such as canceling the print job, can be carried out more quickly.
This invention addresses the time delay of the previous cancel print techniques on host-based printers, mostly caused by the unavailability of the INIT line on all port or system configurations. In operation of the preferred embodiment, the printer is purged by sending a string of characters, preferably NULL characters, within the print data swath until a given number of characters have been received by the printer, which is determined after review of the print data swath sent. If a continuous stream of characters is being sent by the host computer, the printer will then preferably send a message to alert the host to stop sending NULL characters in print data swaths as the print job has been purged. Once the host computer receives the alert, the characters will cease to be sent and the printer can continue canceling the print job in the most expeditious manner.
Other objects, features, and advantages of the present invention will become apparent after review of the hereinafter set forth Brief Description of the Drawings, Detailed Description of the Invention, and claims appended herewith.